/**
 * 给定无根树，每次删除一个叶子节点，问最少几次操作可以删除节点1
 * 用1作为树根，假设节点1有x个儿子，只需要删除其中x-1个儿子即可
 * 显然留下size最大的儿子即可
 */
#include <bits/stdc++.h>
using namespace std;

#include <bits/extc++.h>
using namespace __gnu_pbds;

using llt = long long;
using vi = vector<int>;
using vvi = vector<vi>;

int N;
vvi G;

vector<int> D;

void dfs(int u, int p){
    D[u] = 1;
    for(auto v : G[u]){
        if(v == p) continue;
        dfs(v, u);
        D[u] += D[v];
    }
}

int proc(){
    if(G[1].size() == 1) return 1;

    D.assign(N + 1, 0);
    dfs(1, 0);
    int tmp = 0;
    for(auto v : G[1]){
        tmp = max(tmp, D[v]);
    }
    return N - tmp;
}


int main(){
#ifndef ONLINE_JUDGE
    freopen("z.txt", "r", stdin);
#endif
    ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(0);
    int nofkase = 1;
    // cin >> nofkase;
    while(nofkase--){
        cin >> N;
        G.assign(N + 1, {});
        for(int a,b,i=1;i<N;++i){
            cin >> a >> b;
            G[a].push_back(b);
            G[b].push_back(a);
        }
        cout << proc() << endl;
    }
    return 0;
}